import matplotlib.pyplot as plt
import numpy as np
import matplotlib

matplotlib.rcParams['font.sans-serif'] = ['WenQuanYi Zen Hei']  # 替换成你安装的中文字体名称
matplotlib.rcParams['axes.unicode_minus'] = False

# 数据文件路径
file_path = "../output/test.txt"

# 读取数据
with open(file_path, 'r') as file:
    lines = file.readlines()

# 第一行是流数量
num_flows = int(lines[0].strip())

# 初始化列表存储流的属性
source_nodes = []
dest_nodes = []
flow_sizes = []
start_times = []

# 解析数据
for line in lines[1:num_flows+1]:
    parts = line.strip().split()
    if len(parts) < 6:
        continue  # 跳过不完整的数据行
    source_nodes.append(int(parts[0]))
    dest_nodes.append(int(parts[1]))
    flow_size = int(parts[4])
    flow_sizes.append(flow_size)
    start_time = float(parts[5])
    start_times.append(start_time)

# 转换为numpy数组便于处理
flow_sizes = np.array(flow_sizes)
start_times = np.array(start_times)

# 定义短流和长流的阈值（例如使用中位数作为分界）
is_short_flow = flow_sizes > 0

# 创建散点图
plt.figure(figsize=(12, 3))

# 绘制短流
plt.scatter(start_times[is_short_flow], flow_sizes[is_short_flow],
            color='blue', alpha=0.6, s=2)


# 添加标题和标签
plt.title('流量分布图 (Flow Size vs Start Time)')
plt.xlabel('开始时间 (Start Time)')
plt.ylabel('发送字节数 (Flow Size in Bytes)')

# 添加图例
plt.legend()

# 显示网格
plt.grid(True, linestyle='--', alpha=0.5)

# 调整布局
plt.tight_layout()

# 显示图表
plt.savefig("dis.png")
